package com.dd.cloud.user.service.doctor;


import com.baomidou.mybatisplus.extension.service.IService;
import com.dd.cloud.user.entity.doctor.DoctorIntegral;
import com.dd.cloud.user.entity.order.OrderPay;
import com.dd.cloud.user.req.doctor.DoctorIntegralReq;
import com.dd.cloud.user.res.doctor.DoctorIntegraRes;
import com.dd.cloud.user.res.doctor.DoctorIntegralDataRes;

import java.util.List;

/**
 * <p>
 * 医生积分表 服务类
 * </p>
 *
 * @author czg
 * @since 2023-10-07
 */
public interface IDoctorIntegralService extends IService<DoctorIntegral> {

    /**
     * 查询积分列表
     *
     * @param doctorIntegralReq
     * @return
     */
    List<DoctorIntegraRes> queryIntegralList(DoctorIntegralReq doctorIntegralReq);

    /**
     * 注册奖励
     *
     * @param doctorId
     * @param type
     */
    void registrationBonus(Integer type, Integer doctorId);

    /**
     * 完成认证审核
     *
     * @param doctorId
     * @param type
     */
    void fishedChecked(Integer type, Integer doctorId);

    /**
     * 完成个人信息填写
     *
     * @param doctorId
     * @param type
     */
    void fishedInfo(Integer type, Integer doctorId);

    /**
     * 上传医生头像
     *
     * @param type
     * @param doctorId
     */
    void uploadHeadImg(Integer type, Integer doctorId);

    /**
     * 邀请医生注册奖励
     *
     * @param doctorId
     * @param type
     */
    void inviteDoctor(Integer type, Integer doctorId);

    /**
     * 邀请患者积分
     *
     * @param type
     * @param doctorId
     */
    void inviteUserFamily(Integer type, Integer doctorId);

    /**
     * 智能开方学习模式
     *
     * @param doctorId
     * @param type
     */
    void fishedStudyPres(Integer type, Integer doctorId);

    /**
     * 开方
     *
     * @param type
     * @param orderNo
     */
    void fishedSmartPres(Integer type, String orderNo);

    /**
     * 阅读奖励
     *
     * @param doctorId
     * @param type
     */
    void readIntegral(Integer type, Integer doctorId);

    /**
     * 连续登录
     *
     * @param type
     * @param doctorId
     */
    void login(Integer type, Integer doctorId);

    /**
     * 分享
     *
     * @param doctorId
     * @param type
     */
    void share(Integer type, Integer doctorId);

    /**
     * 修改状态
     *
     * @param id
     * @param status
     */
    void updateStatus(Integer id, Integer status);

    /**
     * 获取可领取积分
     *
     * @return
     */
    List<DoctorIntegral> queryIntegralHomeList();

    /**
     * 获取学习奖励
     *
     * @param type
     * @param doctorId
     * @param postId
     */
    void insertReadIntegral(Integer type, Integer doctorId, Integer postId);

    /**
     * 积分统计
     *
     * @return
     */
    Integer queryIntegralUseTotal();

    /**
     * 支付成功 发放积分
     *
     * @param orderPay
     */
    void addDoctorIntegral(OrderPay orderPay);

    /**
     * 退回积分
     *
     * @param orderPay
     */
    void refundIntegral(OrderPay orderPay);

    /**
     * 退款回收
     *
     * @param orderNo
     */
    void refund(String orderNo);

    /**
     * 查询获取剩余,使用,消耗积分
     *
     * @return
     */
    DoctorIntegralDataRes queryDoctorIntegral();

    /**
     * 查询医生积分
     *
     * @param doctorId
     * @return
     */
    List<DoctorIntegral> queryDoctorIntegralList(Integer doctorId);

    /**
     * 任务积分
     *
     * @param doctorId
     */
    void readTaskIntegral(Integer doctorId, Integer type);

    /**
     * 查看圈子内容
     *
     * @param type
     * @[param doctorId
     */
    void view(Integer doctorId, Integer type);


    /**
     * 奖励
     * @param type
     * @param doctorId
     */
    void award(Integer doctorId, Integer type);

    /**
     * 去除积分
     */
    void updateDoctorIntegtal();
}
